#include <stdio.h>

#define SIZE 20
#define d_SIZE 500

int prime (int n)
{
    int i;
    for (i = 2; i*i <= n; i++)
    {
        if (n%i == 0)
            return 0;
    }
    return 1;
}


int main()
{
    int a[SIZE + 1] = {0}, b[SIZE + 1] = {0}, c[SIZE + 1] = {0};
    int tmp = 1, i = 0;
    while (tmp != 0)
    {
        scanf("%d", &tmp);
        if (tmp != 0)
        {
            a[i++] = tmp;
        }
    }
    int len = i;
    for (i = 0; i < len; i++)
    {
        b[i] = a[i]/100;// 前两位
        c[i] = a[i] - b[i]*100;// 后两位
    }

    int d[d_SIZE] = {0};
    int j = 0, k = 0;
    for (i = 0; i < len; i++)
    {
        for (j = 0; j < len; j++)
        {
            d[k++] = b[i]*100 + c[j];
        }
    }
    int d_len = k;
    // 第一遍：去掉内部重复
    for (i = 0; i < d_len; i++)
    {
        for (j = i+1; j < d_len; j++)
        {
            if (d[i] == d[j])
                d[j] = -100;
        }
    }
    // 第二遍：去掉和原数重复的
    for (i = 0; i < len; i++)// 遍历a数组
    {
        for (j = 0; j < d_len; j++)// 遍历d数组
        {
            if (a[i] == d[j])
                d[j] = -100;
        }
    }
    int counter = 0;
    // 第三遍：计数d数组里素数的个数
    for (i = 0; i < d_len; i++)
    {
        if (-100 != d[i])
        {
            if (prime(d[i]))
                counter++;
        }
    }
    printf("%d\n", counter);
    return 0;
}


/* for (i = 0; i < len; i++)
    {
        printf("a: %d ", a[i]);
    }
    printf("\n");
    for (i = 0; i < len; i++)
    {
        printf("b: %d ", b[i]);
    }
    printf("\n");
    for (i = 0; i < len; i++)
    {
        printf("c: %d ", c[i]);
    } */